//
//  YWReportTroubleDBManager.h
//  maintain
//
//  Created by 烟雨云渊 on 17/3/2.
//  Copyright © 2017年 ewin. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "YWSingleton.h"
#import "YWReportTroubleModel.h"
#import "YWDBTool.h"

@interface YWReportTroubleDBManager : NSObject
YWSingletonH(Manager)
/**
 *  创建报障数据库表
 *
 *  @return 结果
 */
- (void)createAllReportTroubleTable;
- (BOOL)addColumInReportTroubleTable;
/**
 *  更新报障数据库表，数组更新
 *
 *  @param reportTroubleArray 更新报障数组
 *
 *  @return 结果
 */
- (BOOL)updateReportTroubleWithArray:(NSArray*)reportTroubleArray;
/**
 *  更新报障单状态
 *
 *  @param status 报障单状态
 *
 *  @return 结果
 */
-(BOOL)updateReportTroubleStatus:(NSInteger)status troubleId:(NSInteger)troubleId;
/**
 *  更新报障的troubleID和sequence
 *
 *  @param reportTrouble 接口返回的troubleId
 *  @param originTroubleId 本地的生成的troubleId
 *
 *  @return 结果
 */
- (BOOL)updateReportTroubleIdAndSequence:(YWReportTroubleModel*)troubleJson originTroubleId:(NSInteger)originTroubleId;
/**
 *  设置报障任务上传失败
 *
 *  @param reportTrouble 任务模型
 *
 *  @return 结果
 */
- (BOOL)setUploadFailWithReportTrouble:(YWReportTroubleModel*)reportTrouble;

/**
 *  删除本地报障
 *
 *  @param troubleId troubleId
 *
 *  @return 结果
 */
- (BOOL)deleteReportTroubleWithTroubleId:(NSInteger)troubleId orUniqueTag:(NSString *)uniqueTag;

- (YWReportTroubleModel*)reportTroubleWithFMResultSet:(FMResultSet*)set FMDatabase:(FMDatabase*)db needSelectTroubleMission:(BOOL)need;
/**
 *  获取所有的我的报障（包括未分配，已分配）
 *
 *  @param page 页数
 *
 *  @return 结果
 */
- (NSArray *)getMyReportTroubleWithPage:(NSInteger)page;
/**
 *  获取所有的报障(完成和未完成)
 *
 *  @param page 页数
 *
 *  @return 结果
 */
- (NSArray *)getMyReportTroubleWithAssignStatus:(BOOL)isAssign page:(NSInteger)page;
/**
 *  获取抢单
 *
 *  @param page 页数
 *
 *  @return 结果
 */
- (NSArray *)getReportTroubleUnassignBillsWithPage:(NSInteger)page;
/**
 *  获取该设备下的报障
 *
 *  @param equipmentId 设备id
 *  @param page 页数
 *
 *  @return 结果
 */

- (NSArray *)getReportTroubleWithEquipmentId:(NSString*)equipmentId page:(NSInteger)page;
/**
 *  获取该地址下的报障
 *
 *  @param locationId 地址id
 *  @param page 页数
 *
 *  @return 结果
 */

- (NSArray *)getReportTroubleWithLocationId:(NSInteger)locationId page:(NSInteger)page;
/**
 *  获取单个报障单
 *
 *  @param troubleId 报障单Id
 *
 *  @return 结果
 */
- (YWReportTroubleModel*)getOneReportTroubleWithTroubleId:(NSInteger)troubleId;
/**
 *  上传失败的报障
 *
 *  return 上传状态是是失败的报障
 */
- (NSArray*)uploadFailedReportTroubleArray;
@end
